package com.sora.pipeline.domain.dto;

import com.sora.pipeline.domain.InspectionPlan;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 巡检计划详细信息DTO
 * 包含线路代码和负责人名称
 * 
 * @author system
 * @since 2025-01-20
 */
@Data
public class InspectionPlanWithDetailsDTO {
    
    /**
     * 计划ID
     */
    private Long id;
    
    /**
     * 计划代码
     */
    private String code;
    
    /**
     * 计划名称
     */
    private String name;
    
    /**
     * 线路ID
     */
    private Long lineId;
    
    /**
     * 线路代码
     */
    private String lineCode;
    
    /**
     * 线路名称
     */
    private String lineName;
    
    /**
     * 负责人ID
     */
    private Long assigneeId;
    
    /**
     * 负责人姓名
     */
    private String assigneeName;
    
    /**
     * 负责人用户名
     */
    private String assigneeUsername;
    
    /**
     * 巡检周期
     */
    private String cycle;
    
    /**
     * 状态
     */
    private String status;
    
    /**
     * 描述
     */
    private String description;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
    
    /**
     * 是否删除
     */
    private Boolean deleted;
    
    /**
     * 从InspectionPlan实体转换
     */
    public static InspectionPlanWithDetailsDTO fromInspectionPlan(InspectionPlan plan) {
        InspectionPlanWithDetailsDTO dto = new InspectionPlanWithDetailsDTO();
        dto.setId(plan.getId());
        dto.setCode(plan.getCode());
        dto.setName(plan.getName());
        dto.setLineId(plan.getLineId());
        dto.setAssigneeId(plan.getAssigneeId());
        dto.setCycle(plan.getCycle());
        dto.setStatus(plan.getStatus());
        dto.setDescription(plan.getDescription());
        dto.setCreatedAt(plan.getCreatedAt());
        dto.setUpdatedAt(plan.getUpdatedAt());
        dto.setDeleted(plan.getDeleted());
        return dto;
    }
}
